 Fortran 90.
 Explained
 Michael Metcalf
 Data Handling Division
 CERN, Geneva, Switzerland
 John Reid
 Atlas Centre, Rutheфrd Appleton Laboratory
 Oxfordshire, UK
 (formerly of Harwell Laboratory)
 OXTORD NEW YORK TOKYO
 OXFORD UNIVERSITY PRESS

 Математическое обеспечение ЭВМ
 М.Меткалф, Дж.Рид
 Описание языка программирования Фортран 90.
 Перевод с английского П.А.Горбунова
 Москва «Мир» 1995

 Меткалф М., Рид Дж.
 М54 Описание языка программирования Фортран 90. Пер. с англ. - М.: Мир, 1995. - 302 с.
 ISBN 5-03-001426-8
 Книга известных специалистов в области современного программирования (Швейцария, Великобритания), дающая описание нового стандарта языка программирования Фортран. Новый стандарт вобрал в себя опыт, накопленный при разработке других языков, и вместе с тем сохранил индивидуальность Фортрана. Он полностью обратно совместим с Фортраном 77. Первый автор знаком читателям по его книге «Оптимизация в Фортране» (М.: Мир, 1986).
 Для разработчиков системного программного обеспечения, для программистов разной квалификации, для изучающих программирование.
 ББК 32.973

 Редакция литературы по математическим наукам

 СОДЕРЖАНИЕ:
 Предисловие переводчика (5).
 Предисловие к русскому изданию (7).
 Предисловие (8).
 1. Фортран вчера, сегодня и... завтра (11).
 1.1. История Фортрана (11).
 1.2. Новый стандарт (14).
 1.3. Стандартизация (15).
 1.4. Эволюция языка (18).
 1.5. Соответствие стандарту (19).
 2. Элементы языка (22).
 2.1. Введение (22).
 2.2. Набор символов Фортрана (22).
 2.3. Лексемы (23).
 2.4. Формат программного текста (24).
 2.5. Понятие типа (26).
 2.6. Буквгкльные ксжстанты встрюенного типа (27).
 2.6.1. Буквальные ксжстанты целого типа (27).
 2.6.2. Буквальные константы вещественного типа (29).
 2.6.3. Буквальные константы комплексного типа (30).
 2.6.4. Буквальные ксжстанты текстового типа (31).
 2.6.5. Буквальные константы логического типа (33).
 2.7. Имена (34).
 2.8. Скалярные переменные встроенного типа (34).
 2.9. Производные типы данных (35).
 2.10. Массивы встроенного типа (37).
 2.11. Текстовые подстроки (39).
 2.12. Объекты и подобъекты (41).
 2.13. Ссылки (41).
 2.14. Обзор (43).
 Упражнения (43).
 3. Выражения и операторы присваивания (46).
 3.1. Введение (46).
 3.2. Скалярные числовые выражения (47).
 3.3. Определенные и неопределенные переменные (49).
 3.4. Скалярное числовое присваивание (50).
 3.5. Скалярные операции отношения (51).
 3.6. Скалярнце логические выражения и присваивания (52).
 3.7. Скалярные текстовые выражения и присваивания (53).
 3.8. Конструкторы структур и задаваемые скалярные операции (54).
 3.9. Задаваемые скалярные присваивания (57).
 3.10. Выражения с массивами (58).
 3.11. Присваивание массивов (60).
 3.12. Ссылки в выражениях и присваиваниях (61).
 3.13. Обзор (62).
 Упражнения (63).
 4. Операторы управления (65).
 4.1. Введение (65).
 4.2. Оператор GO ТО (65).
 4.3. Оператор и конструкция IF (66).
 4.3.1. Оператор IF (66).
 4.3.2. Конструкция IF (67).
 4.4. Конструкция CASE (69).
 4.5. Конструкция DO (71).
 4.6. Обзор (75).
 Упражнения (77).
 5. Программные компоненты и процедуры (78).
 5.1. Введение (78).
 5.2. Главная программа (79).
 5.3. Оператор STOP (80).
 5.4. Внешние субпрограммы (81).
 5.5. Модули (82).
 5.6. Внутренние субпрограммы (84).
 5.7. Параметры процедур (84).
 5.7.1. Параметры-ссылки (86).
 5.7.2. Ограничения на фактические параметры (86).
 5.7.3. Параметры с атрибутом TARGET (87).
 5.8. Оператор RETURN (87).
 5.9. Вид связи параметра (88).
 5.10. Функции (89).
 5.10.1. Запрещенные побочные эффекты (90).
 5.11. Явные и неявные интерфейсы (91).
 5.12. Процедуры как параметры (93).
 5.13. Ключевые и необязательные параметры (94).
 5.14. Область видимости меток (96).
 5.15. Область видимости имен (96).
 5.16. Рекурсивные процедуры (99).
 5.17. Предложение RESULT (100).
 5.18. Перегрузка и родовые интерфейсы (101).
 5.19. Подразумеваемая длина текстового параметра (103).
 5.20. Операторы SUBROUTINE и FUNCTION (104).
 5.21. Порядок операторов (104).
 5.22. Обзор (105).
 Упражнения (106).
 6. Массивы (108).
 6.1. Введение (108).
 6.2. Массивы нулевой длины (108).
 6.3. Массивы с подразумеваемой формой (109).
 6.4. Автоматические объекты (110).
 6.5. Элементные опергшии и присваивания (110).
 6.6. Массивоподобные функции (112).
 6.7. Динамическая память (112).
 6.7.1. Выделяемые массивы (112).
 6.7.2. Оператор ALLOCATE (114).
 6.7.3. Оператор DEALLOCATE (115).
 6.7.4. Оператор NULLIFY (116).
 6.8. Оператор и контрукция WHERE (116).
 6.9. Элементы массивов (118).
 6.10. Подобъекты массивов (119).
 6.11. Массивы ссылок (122).
 6.12. Ссылки как псевдонимы (123).
 6.13. Конструкторы массивов (123).
 6.14. Массивы-маски (125).
 6.15. Обзор (125).
 Упражнения (125).
 7. Операторы описания (127).
 7.1. Введение (127).
 7.2. Неявное снтределение типа (127).
 7.3. Одновременное описание объектов разных форм (130).
 7.4. Именованные константы и константные выражения (131).
 7.5. Исходные значения переменных (134).
 7.6. Атрибуты PUBLIC и PRIVATE (137).
 7.7. Операторы POINTER, TARGET и ALLOCATABLE (138).
 7.8. Операторы INTENT и OPTIONAL (138).
 7.9. Атрибут SAVE (139).
 7.10. Оюратор USE (140).
 7.11. Определения производных типов (143).
 7.12. Оператор сяшсания типа (145).
 7.13. Задание типа и параметров типа (146).
 7.14. Описательные выражения (147).
 7.15. Оператор NAMELIST (148).
 7.16. Обзор (149).
 Упражнения (150).
 8. Встроенные процедуры (152).
 8.1. Введение (152).
 8.1.1. Обращения с ключевыми параметрами (152).
 8.1.2. Виды встроенных процедур (153).
 8.1.3. Огаратор INTRINSIC (153).
 8.2. Справочные функции для любых типов (154).
 8.3. Числовые элементные функции (154).
 8.3.1. Элементные функции, которые могут преобразовывать тип (155).
 8.3.2. Элементные функции, не преобразующие тип (156).
 8.4. Математические элементные функции (157).
 8.5. Текстовые и логические элементные функции (158).
 8.5.1. Преобразования текст-цифра (158).
 8.5.2. Функции лексического сравнения (159).
 8.5.3. Элементные функции для обработки строк (159).
 8.5.4. Преобразования логического типа (160).
 8.6. Неэлементные функции для обработки строк (160).
 8.6.1. Справочная функция для строк (160).
 8.6.2. Преобразующие функции для строк (161).
 8.7. Числовые справочные и преобразуюшие функции (161).
 8.7.1. Модели для данных целого и вещественного типов (161).
 8.7.2. Числовые справочные функции (162).
 8.7.3. Элементные функции для действий над вещественными числами (163).
 8.7.4. Преофазующие функции для значений параметра разновидности (164).
 8.8. Процедуры для работы с битами (165).
 8.8.1. Сцравочвая функция (165).
 8.8.2. Элементные функции (165).
 8.8.3. Элементная осдпрограмма (167).
 8.9. Функция переноса (167).
 8.10. функции для умножения векторов и матриц (168).
 8.11. Преобразующие функции для редукции массивов (168).
 8.11.1. Случай одного параметра (168).
 8.11.2. Необязательный аргумент DIM (169).
 8.11.3. Необязательный аргумент MASK (169).
 8.12. Справочные функции для массивов (170).
 8.12.1. Cocтояниe выделенности массива (170).
 8.12.2. Границы, форма и размер массива (170).
 8.13. Функции для создания массивов и операций над ними (171).
 8.13.1. Элементная функция слияния (171).
 8.13.2. Упаковка и распаковка массивов (171).
 8.13.3. Перефофмиование массива (172).
 8.13.4 Преобразующая функция для репродуцирования (173).
 8.13.5. Функции сдвига массива (173).
 8.13.6. Транспонирование матрицы (174).
 8.14. Преобразующие функции для покска в массиве (174).
 8.15. Встроенные неэлементные подпрограммы (174).
 8.15.1. Часы реального времени (175).
 8.15.2. Случайные числа (176).
 8.16. Обзор (176).
 Упражнения (177).
 9. Передача данных (178).
 9.1. Введение (178).
 9.2. Конверсия чисел (179).
 9.3. Списки ввода-вывода (180).
 9.4. Задание формата (182).
 9.5. Номер устройства (184).
 9.6. Внутренние файлы (185).
 9.7. Форматный ввод (186).
 9.8. Форматный вывод (188).
 9.9. Ввод под управлением списка (189).
 9.10. NAMELIST (191).
 9.11. Управление кареткой (193).
 9.12. Непродвигающий ввод-вывод (194).
 9.13. Дескрипторы формата (195).
 9.13.1. Коэффициент повторения (196).
 9.13.2. Дескрипторы формата данных (197).
 9.13.3. Дескрипторы текстовых строк (201).
 9.13.4. Управляющие дескрипторы (201).
 9.14. Бесформатный ввод-вывод (205).
 9.15. Файлы прямого доступа (206).
 9.16. Выполнение оператора передачи данных (207).
 9.17. Обзор (208).
 Упражнения (209).
 10. Операции над внешними файлами (211).
 10.1. Введение (211).
 10.2. Оператоы позинионирования файлов (212).
 10.2.1. Оператор BACKSPACE (212).
 10.2.2. Оператор REWIND (213).
 10.2.3. Оператор ENDFILE (213).
 10.2.4. Операторы передачи данных (214).
 10.3. Оператор OPEN (214).
 10.4. Оператор CLOSE (219).
 10.5. Оператор INQUIRE (219).
 10.6. Обзор (224).
 Упражнения (224).
 11. Нерекомендуемые свойства Фортрана (225).
 11.1. Введение (225).
 11.2. Ассоциирование памяти (225).
 11.2.1. Огаратор EQUIVALENCE (227).
 11.2.2. Общие блоки (228).
 11.2.3. BLOCK DATA (231).
 11.2.4. Несоответствие формы и текстовой длины (232).
 11.2.5. Оператор ENTRY (234).
 11.3. Новые избыточные свойства (236).
 11.3.1. Строка INCLUDE (236).
 11.3.2. Упргшление циклом при помощи DO WHILE (237).
 11.4. Старые избыточные свойства (237).
 11.4.1. Фиксированный формат текста (237).
 11.4.2. Вещественная двойная точность (238).
 11.4.3. Вычисляемый GO ТО (239).
 11.4.4. Описание текстовой длины в виде *len (240).
 11.4.5. Положение оператора DATA (240).
 11.4.6. Оператор-функция (240).
 11.4.7. Специфические имена встроенных функций (241).
 11.4.8. Подразумеваемая текстовая длина (242).
 Приложение А. Встроенные процедуры (245).
 Приложение В. Операторы Фортрана 90 (250).
 Приложение С. Устаревшие свойства Фортрана (254).
 С.1. Арифметический IF (254).
 С.2. Варианты конструкции DO (254).
 С.З.Назначаемый GO ТО и назначаемый формат (255).
 С.4. Переход на оператор END IF (257).
 С.5. Альтернативный возврат (257).
 С.6. Оператор PAUSE (258).
 С.7. Дескриптор формата Н (259).
 Приложение D. Термины Фортрана 90(260).
 Приложение Б. Ответы к упражнениям (272).
 Приложение F. Пример со ссылками и рекурсией (283).
 Предметный указатель (290).

 Научное издание
 Майкл Меткалф, Джон Рид
 Описание языка программирования Фортран 90.